home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / hana / hio.c < prev    next >
C/C++ Source or Header  |  1994-11-16  |  2KB  |  120 lines

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #include<ctype.h>
  5. #include"opt.h"
  6. #include"agfont.h"
  7. #include"hio.h"
  8.  
  9. static char fbuf[20480];    // フォントバッファ
  10. static char buf[1024];        // 文字列用バッファ
  11.  
  12. // static proto type
  13. static void WriteBitPattern(char b,FILE *fp);
  14.  
  15. //--------------------------------------------------
  16. //機能:ターゲットファイルから文字列を読み込みその数
  17. //     を(全角で)返す。
  18. //入力:文字列を記述したファイル名(半角文字を許さない)
  19. //出力:文字列の数(全角)。
  20. //参照:なし
  21. //--------------------------------------------------
  22. int ReadFile(char *f)
  23. {
  24.     FILE *fp;
  25.     char *p;
  26.     
  27.     if((fp=fopen(f,"r"))==NULL){
  28.         printf("Err: File can not open.\n");
  29.         exit(1);
  30.     }
  31.     
  32.     fgets(buf,513,fp);
  33.     fclose(fp);
  34.     
  35.     if((p=strstr(buf,"\n"))!=NULL){
  36.         *p='\0';
  37.     }
  38.     return(strlen(buf)/2);
  39. }
  40.  
  41. //--------------------------------------------------
  42. //機能: 花文字をファイルに出力する
  43. //
  44. //入力: 変換対象のファイル名
  45. //出力: なし
  46. //
  47. //参照: WriteBitPattern(),AG_FontRead2(),
  48. //        MakeFileName()
  49. //--------------------------------------------------
  50. void MakeHana(char *f)
  51. {
  52.     int xloop,yloop,i,j1,j2,k,l;
  53.     int fs,spc,fds;
  54.     char *p;
  55.     FILE *fp;
  56.     
  57.     l=ReadFile(f);
  58.     
  59.     // フォントの(一括)読み込み
  60.     fs=GetFontSize();
  61.     p=GetFontFile();
  62.     AG_ReadFont2(fbuf,buf,fs,p);
  63.     
  64.     // スペースの決定
  65.     spc=SetSpace();
  66.     
  67.     // 出力ファイルのオープン
  68.     p=MakeFileName(f,"hnm");
  69.     if((fp=fopen(p,"w"))==NULL){
  70.         printf("Err:Output file can not open.\n");
  71.         exit(1);
  72.     }
  73.     
  74.     xloop=fs/8;
  75.     yloop=fs;
  76.     fds=(fs*fs)/8;
  77.     
  78.     for(i=0;i<l;i++){
  79.         for(k=0; k<yloop;k++){
  80.             for(j1=0;j1<spc;j1++) fprintf(fp," ");
  81.             for(j2=0;j2<xloop;j2++){
  82.                 WriteBitPattern(fbuf[i*fds+k*xloop+j2],fp);
  83.             }
  84.             fprintf(fp,"\n");
  85.         }
  86.         fprintf(fp,"\n");
  87.     }
  88.     fclose(fp);
  89.     
  90. }
  91.  
  92. //------------------------------------------
  93. //機能:ビットパターンをファイルに出力する。
  94. //
  95. //入力: char   b...ビットパターン
  96. //      FILE *fp...出力ファイルへのポインタ
  97. //出力:なし
  98. //参照:なし
  99. //------------------------------------------
  100. void WriteBitPattern(char b,FILE *fp)
  101. {
  102.     int i,ptn;
  103.     char sp[2];
  104.     
  105.     ptn=GetPattern();
  106.     if(ptn==PAT1){
  107.         strcpy(sp,"■");
  108.     }else if(ptn==PAT2){
  109.         strcpy(sp,"□");
  110.     }
  111.     
  112.     for(i=0;i<8;i++){
  113.         if((b >> (7-i)) & 0x01){
  114.             fprintf(fp,"%s",sp);
  115.         }else{
  116.             fprintf(fp,"  ");
  117.         }
  118.     }
  119. }
  120.